@@ -11,6 +11,7 @@ from utils.page_utils import pagination  | 
            ||
| 11 | 11 | 
                from utils.error.errno_utils import UserStatusCode, MessageStatusCode  | 
            
| 12 | 12 | 
                from utils.error.response_utils import response  | 
            
| 13 | 13 | 
                 | 
            
| 14 | 
                +from utils.redis.rmessage import set_system_message_read_info, get_system_message_read_info  | 
            |
| 14 | 15 | 
                from utils.redis.rmessage import set_system_message_delete_info, get_system_message_delete_info  | 
            
| 15 | 16 | 
                 | 
            
| 16 | 17 | 
                 | 
            
                @@ -28,23 +29,21 @@ def message_list_api(request):  | 
            ||
| 28 | 29 | 
                for message in messages:  | 
            
| 29 | 30 | 
                msg_type = message['msg_type']  | 
            
| 30 | 31 | 
                if msg_type == UserMessageInfo.SYSTEM:  | 
            
| 32 | 
                + read_message_ids = get_system_message_read_info(user_id)  | 
            |
| 31 | 33 | 
                deleted_message_ids = get_system_message_delete_info(user_id)  | 
            
| 32 | 
                - type_messages = SystemMessageInfo.objects.filter(  | 
            |
| 34 | 
                + type_unread_messages = SystemMessageInfo.objects.filter(  | 
            |
| 33 | 35 | 
                status=True,  | 
            
| 34 | 36 | 
                ).exclude(  | 
            
| 35 | 
                - pk__in=deleted_message_ids,  | 
            |
| 37 | 
                + pk__in=list(set(read_message_ids + deleted_message_ids)),  | 
            |
| 36 | 38 | 
                )  | 
            
| 37 | 39 | 
                else:  | 
            
| 38 | 
                - type_messages = UserMessageInfo.objects.filter(  | 
            |
| 40 | 
                + type_unread_messages = UserMessageInfo.objects.filter(  | 
            |
| 39 | 41 | 
                to_uid=user_id,  | 
            
| 40 | 42 | 
                msg_type=msg_type,  | 
            
| 43 | 
                + read=False,  | 
            |
| 41 | 44 | 
                status=True,  | 
            
| 42 | 45 | 
                )  | 
            
| 43 | 
                - type_messages = type_messages.order_by(  | 
            |
| 44 | 
                - '-pk'  | 
            |
| 45 | 
                - )[:settings.MESSAGE_NUM_PER_PAGE]  | 
            |
| 46 | 
                - type_messages = [msg.msg_info(user_id) for msg in type_messages]  | 
            |
| 47 | 
                - message['msg_list'] = type_messages  | 
            |
| 46 | 
                + message['msg_unread_num'] = type_unread_messages.count()  | 
            |
| 48 | 47 | 
                final_messages.append(message)  | 
            
| 49 | 48 | 
                 | 
            
| 50 | 49 | 
                     return JsonResponse({
               | 
            
                @@ -121,6 +120,7 @@ def message_type_read_api(request, msg_type=None):  | 
            ||
| 121 | 120 | 
                if _all == 'true': # 系统消息全部读取  | 
            
| 122 | 121 | 
                for msg in SystemMessageInfo.objects.filter(status=True):  | 
            
| 123 | 122 | 
                SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=msg.pk)  | 
            
| 123 | 
                + get_system_message_read_info(user_id)  | 
            |
| 124 | 124 | 
                else:  | 
            
| 125 | 125 | 
                if pk > 0: # 用户(点赞/评论)消息单个读取  | 
            
| 126 | 126 | 
                UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(read=True)  | 
            
                @@ -24,4 +24,5 @@ LENSMAN_PHOTO_HAGGLE_TIMES = 'lensman:photo:haggle:times:%s:%s:%s' # STRING,  | 
            ||
| 24 | 24 | 
                LENSMAN_PHOTO_ORDER_RECORD = 'lensman:photo:order:record:%s:%s' # STRING,摄影师照片购买记录,photo_id、user_id  | 
            
| 25 | 25 | 
                 | 
            
| 26 | 26 | 
                # 系统消息相关  | 
            
| 27 | 
                +SYSTEM_MESSAGE_READ_INFO = 'system:message:read:info:%s' # STRING,系统消息读取信息,user_id  | 
            |
| 27 | 28 | 
                SYSTEM_MESSAGE_DELETED_INFO = 'system:message:deleted:info:%s' # STRING,系统消息删除信息,user_id  | 
            
                @@ -2,9 +2,9 @@  | 
            ||
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                from django.conf import settings  | 
            
| 4 | 4 | 
                 | 
            
| 5 | 
                -from message.models import SystemMessageDeleteInfo  | 
            |
| 5 | 
                +from message.models import SystemMessageReadInfo, SystemMessageDeleteInfo  | 
            |
| 6 | 6 | 
                 | 
            
| 7 | 
                -from utils.redis.rkeys import SYSTEM_MESSAGE_DELETED_INFO  | 
            |
| 7 | 
                +from utils.redis.rkeys import SYSTEM_MESSAGE_READ_INFO, SYSTEM_MESSAGE_DELETED_INFO  | 
            |
| 8 | 8 | 
                 | 
            
| 9 | 9 | 
                import json  | 
            
| 10 | 10 | 
                 | 
            
                @@ -15,6 +15,19 @@ r = settings.REDIS_CACHE  | 
            ||
| 15 | 15 | 
                # 系统消息相关  | 
            
| 16 | 16 | 
                 | 
            
| 17 | 17 | 
                 | 
            
| 18 | 
                +def set_system_message_read_info(user_id):  | 
            |
| 19 | 
                + """ 设置系统消息读取信息 """  | 
            |
| 20 | 
                + read_messages = SystemMessageReadInfo.objects.filter(user_id=user_id, status=True)  | 
            |
| 21 | 
                + read_message_ids = [msg.msg_id for msg in read_messages]  | 
            |
| 22 | 
                + r.setex(SYSTEM_MESSAGE_READ_INFO % user_id, settings.REDIS_EXPIRED_MONTH, json.dumps(read_message_ids))  | 
            |
| 23 | 
                + return read_message_ids  | 
            |
| 24 | 
                +  | 
            |
| 25 | 
                +  | 
            |
| 26 | 
                +def get_system_message_read_info(user_id):  | 
            |
| 27 | 
                + """ 获取系统消息读取信息 """  | 
            |
| 28 | 
                + return json.loads(r.get(SYSTEM_MESSAGE_READ_INFO % user_id) or '[]') or set_system_message_read_info(user_id)  | 
            |
| 29 | 
                +  | 
            |
| 30 | 
                +  | 
            |
| 18 | 31 | 
                def set_system_message_delete_info(user_id):  | 
            
| 19 | 32 | 
                """ 设置系统消息删除信息 """  | 
            
| 20 | 33 | 
                deleted_messages = SystemMessageDeleteInfo.objects.filter(user_id=user_id, status=True)  |